-- 获取 Neovim 数据文件夹的路径并拼接上 lazy.nvim 插件的相对路径
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"

-- 创建一个模块 M
local M = {}

-- 定义一个可用性检查函数，检查插件管理器的路径是否存在
M.avaliable = function()
  return vim.loop.fs_stat(lazypath)
end

-- 定义安装函数，用于安装 lazy.nvim 插件管理器
M.install = function()
  -- 通知用户安装开始
  vim.notify("Installing plugin manager lazy.nvim ...")
  -- 使用 git 命令克隆 lazy.nvim 插件仓库到指定路径
  vim.fn.system({
    "git",
    "clone",
    "--filter=blob:none", -- 使用 git 的 blob:none 过滤器进行克隆以节省空间
    "https://github.com/folke/lazy.nvim.git",
    "--branch=stable", -- 克隆稳定分支的最新稳定版本
    lazypath,
  })
  -- 插件管理器安装完成后通知用户
  vim.notify("plugin manager installed complete")
end

-- 定义设置函数，用于配置 lazy.nvim 插件管理器
M.setup = function()
  -- 将插件路径加入到 Neovim 的 runtimepath 中
  vim.opt.rtp:prepend(lazypath)
  -- 尝试加载 lazy 模块
  local status_ok, lazy = pcall(require, "lazy")
  -- 如果加载失败，则通知用户并返回
  if not status_ok then
    vim.notify("require lazy.nvim")
    return
  end
  -- 加载包含插件配置的模块
  local plugins = require("guru.plugins")
  -- 使用这些插件配置初始化 lazy 插件管理器
  lazy.setup(plugins)
end

-- 返回模块 M
return M
